package Work0603;

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

/**
 * 7：常用图片的格式可以通过读取文件头部分获得：常用图片的格式可以通过读取文件头部分获得(16进制)： （1）JPEG - 文件头标识 (2 bytes):
 * 0xff, 0xd8 (SOI) (JPEG 文件标识)
 * 
 * （3）PNG - 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A （4）GIF - 文件头标识 (6 bytes) 47
 * 49 46 38 39(37) 61 （5）BMP - 文件头标识 (2 bytes) 42 4D，字符即： B M
 * 输入一个文件名，判断其真正格式和其文件类型是否匹配（防止直接给文件改名，比如把一个jpg改成bmp或者把一个rar改成jpg）
 * 
 * @author Y
 *
 */
public class Picture {

	public static void main(String[] args) throws IOException {
		Scanner in = new Scanner(System.in);
		System.out.println("输入一个文件名(结果不显示,表明啥也不是):");
		String a1 = in.next();

		InputStream qw = new FileInputStream(a1);
		int[] jpeg2 = new int[] { 0xff, 0xd8 };
		int[] png2 = new int[] { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A };
		int[] gif2 = new int[] { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, };
		int[] bmp2 = new int[] { 0x42, 0x4D };
		int[] jpeg = new int[jpeg2.length];
		for (int a = 0; a < jpeg2.length; a++) {// 转化16进制
			int e = jpeg2[a];
			jpeg[a] = e;
		}
		int[] png = new int[png2.length];
		for (int a = 0; a < png2.length; a++) {// 转化16进制
			int e = png2[a];
			png[a] = e;
		}
		int[] gif = new int[gif2.length];
		for (int a = 0; a < gif2.length; a++) {// 转化16进制
			int e = gif2[a];
			gif[a] = e;
		}
		int[] bmp = new int[bmp2.length];
		for (int a = 0; a < bmp2.length; a++) {// 转化16进制
			int e = bmp2[a];
			bmp[a] = e;
		}

		int[] num = new int[] { 2, 6, 8 };

		int len;
		byte arr[];
		int acc[];
		for (int b = 1; b <= 3; b++) {
			arr = new byte[num[b - 1]];
			len = qw.read(arr);
			acc = new int[arr.length];
			for (int c = 0; c < arr.length; c++) {
				acc[c] = arr[c];
			}
			if (Arrays.equals(acc, jpeg)) {
				System.out.println("该为jpeg");
			}
			if (Arrays.equals(acc, png)) {
				System.out.println("该为png");
			}
			if (Arrays.equals(acc, gif)) {
				System.out.println("该为gif");
			}
			if (Arrays.equals(acc, bmp)) {
				System.out.println("该为bmp");
			}
		}
		qw.close();

	}

}
